package dj.listener;

import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;

import org.directwebremoting.Container;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.event.ScriptSessionEvent;
import org.directwebremoting.event.ScriptSessionListener;
import org.directwebremoting.extend.ScriptSessionManager;
import org.directwebremoting.servlet.DwrServlet;

import dj.Constant;
import dj.pageModel.Puser;

/**
 * 检测用户上下线，并初始化scriptsession 用户点对点发送消息
 * @author 小江
 *
 */
public class DwrScriptSessionManagerUtil extends DwrServlet {

	private static final long serialVersionUID = -7504612622407420071L;
	
	public void init() throws ServletException {
		
		Container container = ServerContextFactory.get().getContainer();

		ScriptSessionManager manager = container.getBean(ScriptSessionManager.class);

		ScriptSessionListener listener = new ScriptSessionListener() {
			
			public void sessionCreated(ScriptSessionEvent ev) {
				
				HttpSession session = WebContextFactory.get().getSession();

				Puser puser = (Puser) session.getAttribute(Constant.USER_SESSION);

				if(null != puser) {
					ev.getSession().setAttribute("userId", puser.getId());
				}

			}

			public void sessionDestroyed(ScriptSessionEvent ev) {

			}

		};

		manager.addScriptSessionListener(listener);

	}
	

}
